package controller;

import common.Result;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import pojo.SysSchedule;
import service.SysScheduleService;
import service.impl.SysScheduleServiceImpl;
import util.WebUtil;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/* 处理日程相关请求的控制器类
 * 增加日程的请求   /schedule/add
 * 查询日程的请求   /schedule/find
 * 修改日程的请求   /schedule/update
 * 删除日程的请求   /schedule/remove
 * ... ...
 *
 *负责处理所有以/schedule/*开头的所有请求
 *复用分发逻辑
 *
 *
 * */
@WebServlet( "/schedule/*")
public class SysScheduleController extends BaseController {
    // 声明并初始化日程服务层对象，用于调用业务逻辑
    private SysScheduleService scheduleService =new SysScheduleServiceImpl();
// 删除日程请求
    protected void removeSchedule(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 从请求参数中获取要删除日程ID并转为整数 获取客户端提交的请求参数
        int sid = Integer.parseInt(req.getParameter("sid"));
        // 调用服务层方法 删除数据
        scheduleService.removeSchedul(sid);
        // 向客户端响应删除成功结果，result.ok生成成功响应，通过webutil转为JSON串
        WebUtil.writeJson(resp,Result.ok(null));
    }
// 处理修改日程的请求
    protected void updateSchedule(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 接收请求体中的JSON串 转换成一个SysSchedule
        // 反序列化操作，将HTTP请求体中JSON串转为JAVA对象
        //前后端数据交互，前端数据传递为JSON串，但是后端处理业务逻辑针对对象
        SysSchedule schedule = WebUtil.readJson(req, SysSchedule.class);
        // 调用服务层方法,将信息更新进入数据
        scheduleService.updateSchedule(schedule);
        WebUtil.writeJson(resp,Result.ok(null));
    }
//处添加默认日程请求
    protected void addDefaultSchedule(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 接收请求中的uid参数 用户ID
        int uid =Integer.parseInt(req.getParameter("uid"));
        // 调用服务层方法,向数据库中 增加一条 空记录
        scheduleService.addDefault(uid);
        WebUtil.writeJson(resp,Result.ok(null));
    }
// 处理查询所有日程的请求
    protected void findAllSchedule(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 接收请求中的uid参数
        int uid =Integer.parseInt(req.getParameter("uid"));
        // 查询用户的所有日程
        List<SysSchedule> itemList =scheduleService.findItemListByUid(uid);
        // 将用户的所有日程放入一个Result对象
        Map data =new HashMap();
        data.put("itemList",itemList);
        Result result = Result.ok(data);
        // 将Result对象转换为json响应给客户端
        WebUtil.writeJson(resp,result);
    }
}


